'''数组
给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。

 

示例 1：
输入：n = 3
输出：[[1,2,3],[8,9,4],[7,6,5]]
示例 2：

输入：n = 1
输出：[[1]]

'''

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        indexL = []
        dir = 0
        i = 0
        j = 0
        rl = [[-1]*n for _ in range(n)]
        for _ in range(n**2):
            if dir % 4 == 0:
                if j == n - 1 or (i * n + j + 1) in indexL:
                    dir += 1
                    indexL.append(i * n + j)
                    i += 1
                else:
                    indexL.append(i * n + j)
                    j += 1
            elif dir % 4 == 1:
                if i == n - 1 or ((i + 1)* n + j) in indexL:
                    dir += 1
                    indexL.append(i * n + j)
                    j -= 1
                else:
                    indexL.append(i * n + j)
                    i += 1
            elif dir % 4 == 2:
                if j == 0 or (i * n + j - 1) in indexL:
                    dir += 1
                    indexL.append(i * n + j)
                    i -= 1
                else:
                    indexL.append(i * n + j)
                    j -= 1
            elif dir % 4 == 3:
                if i == 0 or ((i - 1)* n + j) in indexL:
                    dir += 1
                    indexL.append(i * n + j)
                    j += 1
                else:
                    indexL.append(i * n + j)
                    i -= 1
        for i in range(n**2):
            rl[indexL[i]//n][indexL[i]%n] = (i + 1)
        return rl